﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using Circa.Tools;
using Configuration = Circa.Configuration;

namespace Circa.Protocol.Irc {

    public abstract class ProtocolEngine: IProtocolEngine, IProtocolPerformer {
        //
        // IProtocolEngine
        //

        public abstract Connection Connection { get; set; }
        public abstract bool IsRegistered { get; set; }

        public abstract event EventHandler<EventArgs> ConnectionEstablished;
        public abstract event EventHandler<EventArgs> Registered;

        public abstract bool RenameTarget( string oldName, string newName );

        //
        // IProtocolPerformer
        //
        public abstract void Join( Channel channel );
        public abstract void Nick( string newNick );
        public abstract void Pong( );
        public abstract void Pong( string arg );
        public abstract void User( string userName, string hostName, string serverName, string realName );
        public abstract void Who( string target );

    }

}
